export default {
    /*圆形图片矩形
    $canvas.drawRoundRect(ctx,0,0,this.width,this.height,20,()=>{
        ctx.fillStyle = '#fff'
        ctx.fillRect(0,0,this.width,this.height)
         ctx.drawImage(img, x, y, w, h)
    })
    */
    drawRoundRect(ctx, x, y, w, h, r, callback) {
        ctx.save()
        if (w < 2 * r) r = w / 2
        if (h < 2 * r) r = h / 2
        console.log('r', r)
        ctx.beginPath()
        ctx.lineWidth= 0;
        ctx.fillStyle = 'rgba(0,0,0,0)';
        ctx.strokeStyle = 'rgba(0,0,0,0)';
        // 登录状态下不会出现这行文字，点击页面右上角一键登录
        ctx.moveTo(x+r, y)
        ctx.arcTo(x+w, y, x+w, y+h, r)
        ctx.arcTo(x+w, y+h, x, y+h, r)
        ctx.arcTo(x, y+h, x, y, r)
        ctx.arcTo(x, y, x+w, y, r)
        ctx.closePath();
         ctx.stroke();
        ctx.clip()
        if(callback && typeof callback == 'function'){
            callback();
        }
        ctx.restore() // 返回上一状态
    },
    /*文字换行*/
    drawText(context, obj) {
        let t = obj.text,
            x = obj.x,
            y = obj.y,
            w = obj.width,
            size = obj.size || 48,
            lineheight = obj.lineheight || 48,
            color = obj.color || '#333333';
        var chr = t.split("");
        var temp = "";
        var row = [];
        context.setFontSize(size);
        context.setFillStyle(color);
        context.setTextAlign('left');
        for (var a = 0; a < chr.length; a++) {
            if (context.measureText(temp).width < w && context.measureText(temp + (chr[a])).width <= w) {
                temp += chr[a];
            } //context.measureText(text).width  测量文本text的宽度
            else {
                row.push(temp);
                temp = chr[a];
            }
        }
        row.push(temp);
        var resY = 0;
        for (var b = 0; b < row.length; b++) {
            context.fillText(row[b], x, y + (b + 1) * lineheight); //字体20，间隔24。类似行高
            resY = y + (b + 1) * lineheight
        }
        
        return resY
        // 只显示2行，加...
        /*for(var b = 0; b < 2; b++){
            var str = row[b];
            if(b == 1){
                str = str.substring(0,str.length-1) + '...';
            }
            context.fillText(str,x,y+(b+1)*24);
        }*/
    },
    //圆形头像
     circleImg(ctx, img, x, y, r,w=1) {
        ctx.save();
        var d = 2 * r;
        var cx = x + r;
        var cy = y + r;
        ctx.beginPath();
        ctx.lineWidth=w;
        ctx.strokeStyle="#fff";
        ctx.arc(cx, cy, r, 0, 2 * Math.PI);
        ctx.stroke();
          ctx.closePath();
        ctx.clip();
        ctx.drawImage(img, x, y, d, d);
        ctx.restore();
    },
    //获取图pain
    getImg(url){
        return new Promise((qres,qrej)=>{
            uni.getImageInfo({
                src: url,
                success(res) {
                    // console.log(res)
                    qres(res)
                },
                fail(err){
                    console.log(err)
                    qrej(err)
                },
            })
        })
    },
    //图片裁剪
    aspectFill(w,h, cw,ch){
        console.log(w,h,cw,ch)
        let res = {
            left:0,
            top:0,
        }
        let bili = w/h;
        res.oh = (cw/bili).toFixed(2);
        res.ow = (ch*bili).toFixed(2);
        if(res.oh>ch){
             res.top = parseInt((res.oh-ch)/2);
             res.ow = cw;
             res.oh = parseInt(res.oh);
        } else if(res.ow>cw){
            res.left =  parseInt((res.ow-cw)/2);
            res.oh = ch;
             res.ow = parseInt(res.ow);
        }
        return res
    },
    canTemp(id,x,y,w,h){
         uni.canvasToTempFilePath({
          x,
          y,
          width: w,
          height: h,
          // destWidth: 100,
          // destHeight: 100,
          canvasId: id,
          success: function(res) {
            // 在H5平台下，tempFilePath 为 base64
            console.log(res.tempFilePath)
            
          } 
        },this)
    },
    //获取文字大小
    getTextWidth(ctx,text, size = 24){
        ctx.font = `${size}px 宋体`
        return ctx.measureText(text).width;
    },
}